<?php

/**
 * 文章操作
 * @author pirate
 */
class Edm_Db_Article extends Zend_Db_Table {

    protected $_name = "article";
    protected $_primary = 'article_id';
    protected $_db;

    /* 初始化 */

    function init() {
        $this->_db = $this->getAdapter();
        parent::init();
    }

    /*
     * 文章个数
     * @return int 文章个数
     */

    public function articleCount() {
        return $this->fetchAll()->count();
    }

    /*
     * 文章列表
     * @param array $filter 过滤条件
     */

    public function articleList($filter = array()) {
        $select = $this->_db->select();
        if (!isset($filter['cols'])) {
            $cols = array('a.article_id', 'a.cat_id', 'a.title', 'a.keywords', 'a.author', 'add_time');
        } else {
            $cols = $filter['cols'];
        }
        $select->from($this->_name . ' AS a', $cols);
        $select->joinInner('article_cat AS ac', 'a.cat_id = ac.cat_id', 'ac.cat_name');
        if (!empty($filter['cat_id'])) {
            $select->where('a.cat_id = ?', $filter['cat_id'])->orWhere('ac.parentid = ?', $filter['cat_id']);
            /* 注：此处可获取当前分类下的所有分类，然后使用IN */
        }
        if (!empty($filter['keywords'])) {
            $select->orWhere('a.title LIKE ?', '%' . $filter['keywords'] . '%');
        }
        if (!isset($fliter['orderBy'])) {
            $select->order('a.article_id DESC');
        } else {
            $select->order($filter['orderBy']);
        }

        $select->sqlcalcfoundrows();

        $select->limitPage($filter['pageNum'], $filter['pageSize']);
        $res = $this->_db->fetchAll($select);
        $count = $this->_db->fetchOne('SELECT FOUND_ROWS()');
        return array('list' => $res, 'count' => $count);
    }

    /*
     * 根据article_id获取信息
     * @param int $article_id 文章id
     * @return array 
     */

    public function getArticle($article_id) {
        $where = $this->_db->quoteInto('article_id = ?', $article_id);
        $row = $this->fetchRow($where);
        if (!$row) {
            return NULL;
        }
        return $row->toArray();
    }

    /*
     * 检查是否存在
     * @param array $data 检测字段=>值
     * @return bool
     */

    public function isExists($data) {
        $sql = "SELECT COUNT(*) FROM " . $this->_name . " WHERE cat_id =:cat_id AND title =:title";
        if (isset($data['article_id'])) {
            $sql .= " AND article_id !=:article_id";
        }
        return $this->_db->fetchOne($sql, $data);
    }

    /*
     * 文章插入
     * @param array $data 插入数据
     * @return bool
     */

    public function Insert($data) {
        return $this->_db->insert($this->_name, $data);
    }

    /*
     * 文章更新
     * @param array $data 更新数据
     * @return bool
     */

    public function Update($data, $article_id) {
        $where = $this->_db->quoteInto('article_id = ?', $article_id);
        return $this->_db->update($this->_name, $data, $where);
    }

    /*
     * 文章删除
     * @param int $article_id 文章编号
     * @return bool
     */

    public function Delete($article_ids) {
        $where = $this->_db->quoteInto('article_id IN(?)', $article_ids);
        return $this->_db->delete($this->_name, $where);
    }

}

